<?php
require_once __DIR__."/Base_model.php";
require APPPATH . "/libraries/PinYin.php";
require APPPATH . "/libraries/Ftp.php";
class Host_user_material_model extends Base_model
{
    public function __construct()
    {
        parent::__construct();
        $this->table = "user_material";
        $this->table1 = "type";
        $this->table2 = "type_sub";
        $this->table3 = "quality_video";
        $this->table_material = "user_material";
        $this->table_type_sub = "type_sub";
        $this->table_push_video = "push_video";
    }

    /**
     *
     */
    public function all($arr){
        $this->db->select('*');
        $this->db->from($this->table);
        //
        $this->db->where("del1",2);
        $this->db->where("is_user_zj",1);
        if($arr['type']==1){
            //弃用
            $this->db->where("examine",1);
        }else if($arr['type']==2 || empty($arr['type'])){
            //待审核
            $this->db->where("examine",2);
        }else if($arr['type']==3){
            //审核通过
            $this->db->where("examine",3);
        }
        //话题筛选
        if(!empty($arr['join_type'])){
            $this->db->where("join_type",$arr['join_type']);
        }
        //话题筛选
        if(!empty($arr['join_type_sub'])){
            $this->db->where("join_type_sub",$arr['join_type_sub']);
        }
        //时间筛选
        if(!empty($arr['start_time']) && !empty($arr['end_time'])){
            $this->db->where("add_time >=",$arr['start_time']);
            $this->db->where("add_time <",$arr['end_time']);
        }
        //配音与视频筛选
        if(!empty($arr['video_type'])){
            $this->db->where("type",$arr['video_type']);
        }

        //分页
        if(!empty($arr['page']) && !empty($arr['limit'])){
            $pages=($arr['page']-1)*$arr['limit'];
            $datas['total']=$this->db->count_all_results("",false);
            $this->db->limit($arr['limit'],$pages);
        }else{
            $datas['total']=$this->db->count_all_results("",false);
        }
        //排序
        $this->db->order_by('add_time',"desc");
        $res = $this->db->get();
        $datas['row']= $res->result_array();
//        echo $this->db->last_query();
        return $datas;
    }

    /**
     *
     */
    public function index($arr){
        $this->db->select('*');
        $this->db->from($this->table);
        //
        $this->db->where("del1",2);
        $this->db->where("examine",3);
        if($arr['type']==1){
            //普通列表
            $this->db->where("quality",1);
        }else if($arr['type']==2){
            //精选列表
            $this->db->where("quality",2);
        }
        //分类筛选
        if(!empty($_GET['join_type'])){
            $arr['join_type']=$_GET['join_type'];
        }
        //话题筛选
        if(!empty($arr['join_type_sub'])){
            $this->db->where("join_type_sub",$arr['join_type_sub']);
        }
        //时间筛选
        if(!empty($arr['start_time']) && !empty($arr['end_time'])){
            $this->db->where("add_time >=",$arr['start_time']);
            $this->db->where("add_time <",$arr['end_time']);
        }

        //分页
        if(!empty($arr['page']) && !empty($arr['limit'])){
            $pages=($arr['page']-1)*$arr['limit'];
            $datas['total']=$this->db->count_all_results("",false);
            $this->db->limit($arr['limit'],$pages);
        }else{
            $datas['total']=$this->db->count_all_results("",false);
        }
        //排序
        if($arr['type']==2){
            $this->db->order_by('quality_order',"asc");
        }
        $this->db->order_by('add_time',"desc");
        $res = $this->db->get();
        $datas['row']= $res->result_array();
//        echo $this->db->last_query();
        return $datas;
    }

    /**
     * 修改编辑
     */
    public function update_edit($arr1,$id){
        $this->db->trans_begin();// 开启事务
        //1.先去修改user_material表
        $this->db->update($this->table,$arr1,['id'=>$id]);
        $arr=$this->db->affected_rows();//受影响的行数
        //2.再去修改精品视频表
        $data['quality_join_type']=$arr1['join_type'];
        $data['quality_join_type_sub']=$arr1['join_type_sub'];
        $data['quatily_pic']=$arr1['pic'];
        $this->db->update($this->table3,$data,['user_material_id'=>$id]);
        if($this->db->trans_status()===false || $arr==0){
            $this->db->trans_rollback();//回滚
            return false;
        }else{
            $this->db->trans_commit();//提交事物
            return true;
        }
    }

    /**
     * 查询分类
     */
    public function types($type=1){
        $this->db->select('*');
        $this->db->from($this->table1);
        if($type==1){
            $this->db->where("is_other !=",999999999);
        }

        //这是不加入已挑选视频
        $this->db->where("online",2);
        $res = $this->db->get();
        $datas= $res->result_array();
//        echo $this->db->last_query();
        return $datas;
    }

    /**
     * 查询话题
     */
    public function type_sub($where=[],$type=1){
        $this->db->select('*');
        $this->db->from($this->table2);

        //这是不加入已挑选视频
        if($type==1){
            $this->db->where("is_other!=",999999999);
            $this->db->where("online",2);
            $this->db->where($where);
        }else if($type==2){
            $this->db->where("is_other!=",999999999);
        }
        $res = $this->db->get();
        $datas= $res->result_array();
//        echo $this->db->last_query();
        return $datas;
    }

    /**
     * 删除
     */
    public function del($id){
        //1.先去查询精品视屏表是否有这个素材
        $this->db->select("*");
        $this->db->from($this->table3);
        $this->db->where("user_material_id",$id);
        $res = $this->db->get();
        $data1 = $res->row_array();
        //查询用户素材表数据
        $data2=$this->one($this->table,['id'=>$id]);
        $datas[0]=$data1;
        $datas[1]=$data2;
        if(!empty($data1)){
            //2.如果有这个数据先去改精品视频表的数据
            $this->db->trans_begin();// 开启事务
            $this->db->delete($this->table3, ['user_material_id' => $id]);
            //受影响的行数
            $arr = $this->db->affected_rows();
            //修改用户上传表
            $this->db->delete($this->table, ['id' => $id]);

            if ($this->db->trans_status() === false || $arr == 0) {
                $this->db->trans_rollback();//回滚
                return false;
            } else {
                $this->db->trans_commit();//提交事物
                return $datas;
            }
        }else{
            $this->db->delete($this->table, ['id' => $id]);
            return $datas;
        }
    }

    /**
     * 修改排序
     */
    public function update_sort($sort,$id,$old_sort){
        //1.先去查询所有排序为1-100的
        $this->db->select("id,quality_order");
        $this->db->from($this->table);
        $this->db->where("quality_order>=",1);
        $this->db->where("quality_order<=",100);
        $this->db->order_by('quality_order',"asc");
        $res1= $this->db->get();
        $data1 =$res1->result_array();
        if(!empty($data1)){
            //4.如果排序值小于已排序个数，把小于这个排序值的放入一个数组，从一开始依次排，大于这个排序的，放入另一个数组，从这个排序之后一次排
            $sort1 = [];
            $sort2 = [];
            $data2 = [];
            //4.原有排序值大于这个排序值的放入$sort2，小于的放入$sort1
            foreach ($data1 as $k => $v) {
                if ($v['quality_order'] < $sort && $v['quality_order'] != $old_sort) {
                    $sort1[] = $v['quality_order'];
                } else if ($v['quality_order'] >= $sort && $v['quality_order'] != $old_sort) {
                    $sort2[] = $v['quality_order'];
                } else {
                    //5.删除$data1中的值，方便遍历，用$data2遍历就行
                    unset($data1[$k]);
                }
            }
            foreach ($data1 as $a => $b) {
                $data2[] = $b;
            }
            $g1 = $this->s1($sort1);
            $g2 = $this->s2($sort2, $sort);
            $g3 = array_merge($g1, $g2);
            $sort3 = array_merge($sort1, $sort2);

            ///////////
            if (empty(array_diff_assoc($g3, $sort3))) {
                $res = $this->update($this->table, ['quality_order' => $sort], ['id' => $id]);
                if ($res) {
                    return true;
                } else {
                    return false;
                }

            } else {
                //先去把以前的排序值从1开始依次排序
                foreach ($data2 as $kk => $vv) {
                    $this->update($this->table, ['quality_order' => $g3[$kk]], ['id' => $vv['id']]);
                }
                //再去修改这个要排序的值
                $res = $this->update($this->table, ['quality_order' => $sort], ['id' => $id]);
                if ($res) {
                    return true;
                } else {
                    return false;
                }
            }
        }else{
            $res=$this->update($this->table,['quality_order'=>$sort],['id'=>$id]);
            if($res){
                return true;
            }else{
                return false;
            }
        }


    }

    public function s1($sort){
        if(!empty($sort)){
            $sort[0]=1;
            $len=count($sort);
            for($i=1;$i<$len;$i++){
                $sort[$i]=$sort[$i-1]+1;
            }
            return $sort;
        }else{
            return [];
        }
    }
    public function s2($sort1,$sort){
        if(!empty($sort1)){
            $sort1[0]=$sort+1;
            $len=count($sort1);
            for($i=1;$i<$len;$i++){
                $sort1[$i]=$sort1[$i-1]+1;
            }
            return $sort1;
        }else{
            return [];
        }
    }

    /**
     * 弃用视频
     */
    public function update_quality_user($data1,$data2,$id){
        $this->db->trans_begin();// 开启事务
        //1.先去修改user_material表
        $this->db->update($this->table,$data1,['id'=>$id]);
        $arr=$this->db->affected_rows();//受影响的行数
        //2.再去修改精品视频表
        $this->db->update($this->table3,$data2,['user_material_id'=>$id]);
        if($this->db->trans_status()===false || $arr==0){
            $this->db->trans_rollback();//回滚
            return false;
        }else{
            $this->db->trans_commit();//提交事物
            return true;
        }
    }

    /**
     * 推送节目
     * @param $materialId
     * @param string $env
     * @return mixed code:-1.推送失败 1.推送成功
     */
    public function push($materialId, $env = 'test')
    {
        $result['code'] = -1;
        $result['msg'] = '';
        $result['data'] = '';

        error_reporting(E_ALL & ~E_NOTICE);
        $py = new Pinyin();

        // 查询视频
        $this->db->select('*');
        $this->db->from($this->table_material);
        $this->db->where("id", $materialId);
        $res = $this->db->get();
        $material = $res->row_array();

        // 视频基媒体信息
        $ffmpeg = new FFmpeg();
        $videoUrl = empty($material['user_video_url']) ? $material['video_url'] : $material['user_video_url'];
        $materialInfo = $ffmpeg->getDetail($videoUrl);

        // 查询话题
        $this->db->select('*');
        $this->db->from($this->table_type_sub);
        $this->db->where("id", $material['join_type_sub']);
        $res = $this->db->get();
        $topic = $res->row_array();

        var_dump($material);
//    echo "\n";
//    echo "<br>";
//    echo "<br>";
//    var_dump($materialInfo);
//    echo "\n";
//    echo "<br>";
//    echo "<br>";
//    var_dump($topic);exit;

        // 构建视频
        $video["videoNameCodeF"] = $material['video_desc']; // 视频名称前半段
        $video["videoNameCodeB"] = ""; // 视频名称后半段
        $video["definition"] = "高清"; // 清晰度，待选项为：超清、高清、标清；默认为高清
        if(!empty($material['hengping_pic'])){
            $video["imgPaths"] = [$material['pic'],$material['hengping_pic']]; // 图片路径1
        }else{
            $video["imgPaths"] = [$material['pic']]; // 图片路径1
        }

        $video["videoPaths"] = [$videoUrl]; // 视频路径
        // 码率
        $rate = ceil($materialInfo['bit_rate'] / 1000);
        if ($rate >= 1000) {
            $rate = round($rate / 1000, 1) . "M";
        } else {
            $rate = $rate . "K";
        }
        $video["videoDataRate"] = $rate; // 视频码率 1000以上的用M(1位小数),1000以下的用K(取整)
        $video["videoSize"] = $materialInfo['width'] . '*' . $materialInfo['height']; // 视频尺寸 宽*高
        $video["lengthUnit"] = 1; // 时长单位[0分 1秒 默认0]
        $video["videoLength"] = ceil($materialInfo['duration']); // 【必填】视频时长【秒】
        $video["headLength"] = ""; // 片头时长[单位默认分，可根据lengthUnit调整]
        $video["tailLength"] = ""; // 片尾时长[单位默认分，可根据lengthUnit调整]
        $video["videoPart"] = ""; // 视频文件所分章节数-M1保留字段
        $video["videoPartTime"] = ""; // 每个章节视频文件的时长-M1保留字段
        $video["createTime"] = $material['add_time'];

        // 构建节目
        $programs["id"] = $material['id']; // 【必填】
        $programs["name"] = mb_strlen($material['video_desc']) >= 24 ? $material['video_desc'] : mb_substr($material['video_desc'], 0, 24); // 【必填】名称
        $programs["alias"] = ""; // 其它名称
        $programs["subName"] = ""; // 副标题
        $programs["keywords"] = $topic['sub_title']; // 关键字 [如果多个以空格分隔]
        $programs["category"] = "综艺"; // 【必填】分类 [如果多个以空格分隔]
        $programs["sndCategory"] = '逗牛短视频'; // 【必填】二级分类 [如果多个以空格分隔]
        $programs["dsc"] = $material['video_desc'] . ' ' . $material['nick_name'] . '原创'; // 简介[20-80]
        $programs["createTime"] = $material['add_time']; // 创建时间
        $programs["source"] = "无"; // 数据来源
        $programs["sourceMedia"] = ""; // 来源介质
        $programs["copyright"] = ""; // 版权方
        $programs["copyrightCode"] = ""; // 版权编码
        $programs["crBeginDate"] = ""; // 版权生效时间
        $programs["crEndDate"] = ""; // 版权失效时间
        $programs["area"] = "中国大陆"; // 【必填】国家地区
        $programs["nameInitials"] = $py->getpy($material['video_desc'], false); // 【必填】名称首字母
        $programs["year"] = date("Y", strtotime($material['add_time'])); // 【必填】年份-自动识别
        $programs["language"] = "普通话"; // 【必填】语言
        $programs["compere"] = ""; // 主持人
        $programs["producer"] = $material['nick_name']; // 制片人
        $programs["column"] = ""; // 栏目
        $programs["tvColumnId"] = ""; // 栏目Id
        $programs["poster"] = $material['pic']; // 海报
        if(!empty($material['hengping_pic'])){
            $programs["poster"] = $material['pic']; // 竖海报
            $programs["posterH"] = $material['hengping_pic']; // 横海报
        }else{
            $programs["poster"] = $material['pic']; // 竖海报
            $programs["posterH"] = "";// 横海报
        }
        $programs["contentProvider"] = "无"; // 内容提供商
        $programs["premiereTime"] = $material['add_time']; // 【必填】首播时间
        $programs["premiereChannel"] = "逗牛短视频"; // 【必填】首播频道
        $programs["seriesNo"] = 1; // 集号
        $programs["planner"] = ""; // 策划人
        $programs["status"] = ""; // 节目状态
        $programs["onlineDate"] = ""; // 节目上线日期
        $programs["director"] = $material['nick_name']; // 【必填】导演
        $programs["screenWriter"] = ""; // 编剧
        $programs["starring"] = $material['nick_name']; // 【必填】主演/主角
        $programs["starringInitials"] = $py->getpy($material['nick_name'], false); // 【必填】主演/主角拼音
        $programs["isUnpack"] = "否"; // 是否拆条 [否/是 默认否]
        $programs["enName"] = ""; // 英文片名
        $programs["sepSeriesAmount"] = ""; // 分集总数
        $programs["prize"] = ""; // 奖项
        $programs["is4K"] = "否"; // 4K标识 [否/是 默认否]
        $programs["accesser"] = ""; // 受众
        $programs["match"] = ""; // 赛事
        $programs["reporter"] = ""; // 记者
        $programs["guest"] = ""; // 嘉宾
        $programs["subject"] = ""; // 科目
        $programs["classHour"] = ""; // 课时
        $programs["cataloger"] = ""; // 编目录入人
        $programs["others"] = ""; // 预留字段
        $programs["platform"] = "douniu"; // 平台 [wuxi:无锡/tencent:腾讯/goat:炫舞未来/hengxin:恒信/douniu:逗牛]
        $programs["deployDate"] = ""; // 发行时间
        $programs["score"] = ""; // 评分
        $programs["isTrailer"] = "否"; // 是否预告片 [否/是 默认否]
        $programs["isStock"] = "否"; // 是否回调 [否/是 默认否]
        $programs["outsideId"] = ""; // 外部来源ID

        // 构建节目集
        $data["id"] = $topic['id']; //【必填】节目集ID
        $data["name"] = mb_strlen($topic['sub_title']) >= 18 ? $topic['sub_title'] : mb_substr($topic['sub_title'], 0, 18); //【必填】名称
        $data['keywords'] = $topic['sub_title']; //【必填】关键字
        $data["alias"] = ""; //其它名称(别名)
        if(empty($topic['sub_title'])){
            $data["labels"] = '原创话题'; //标签 [如果多个以空格分隔]
        }else{
            $data["labels"] = $topic['sub_title']; //标签 [如果多个以空格分隔]
        }

        $data["category"] = "综艺"; //【必填】分类 [如果多个以空格分隔]
        $data["sndCategory"] = '逗牛短视频'; //【必填】二级分类 [如果多个以空格分隔]
        $data["dsc"] = $topic['sub_desc']; //简介（20-80）
        if(empty($topic['sub_desc'])){
            $data["dsc"] = "原创话题";
        }else{
            $data["dsc"] = $topic['sub_desc']; //简介（20-80）
        }
        $data["source"] = ""; //数据来源
        $data["copyright"] = ""; //版权方
        $data["copyrightCode"] = ""; //版权编码
        $data["crBeginDate"] = ""; //版权生效时间
        $data["crEndDate"] = ""; //版权失效时间
        $data["area"] = "中国大陆"; //【必填】国家地区
        $data["nameInitials"] = $py->getpy($topic['sub_title'], false); //【必填】名称首字母
        $data["year"] = date("Y", strtotime($topic['add_times'])); //年份（自动识别）
        $data["language"] = "普通话"; //【必填】语言
        $data["compere"] = ""; //主持人
        $data["producer"] = ""; //制片人
        $data["column"] = "无"; //栏目
        $data["tvColumnId"] = ""; // 栏目Id
        $data["poster"] = ""; //【必填】【话题缩略横图】竖海报
        $data["posterH"] = $topic['sub_pic']; //【必填】【话题缩略横图】横海报
        $data["definition"] = "高清"; //【必填】清晰度 [高清/标清等]
        $data["contentProvider"] = ""; //内容提供商
        $data["contentProviderCode"] = ""; //内容提供商编码
        $data["outerCode"] = ""; //外部数据标识
        $data["seriesAmount"] = 1; //【必填】节目总集数-默认0
        $data["playOrder"] = "降序"; //【必填】节目播放顺序（未来）[降序/升序 默认降序]
        $data["arrangeOrder"] = "降序"; //节目排序方式 [降序/升序]
        $data["videoLength"] = ""; //节目集时长 [单位分]
        $data["crInfoName"] = ""; //版权信息名称
        $data["trailerLength"] = ""; //试播时长 [单位分]
        $data["headLength"] = ""; //片头时长[单位默认分，可根据lengthUnit调整]
        $data["tailLength"] = ""; //片尾时长[单位默认分，可根据lengthUnit调整]
        $data["lengthUnit"] = 1; //时长单位[0:分 1:秒 默认0]
        $data["crInfoName"] = ""; //版权信息名称
        $data["status"] = ""; //节目集状态
        $data["priceLabels"] = ""; //节目价格标签
        $data["suggestedPrice"] = ""; //建议价格 [单位元]
        $data["score"] = ""; //评分
        $data["publishPlatform"] = ""; //发布平台
        $data["relationProgram"] = ""; //关联节目
        $data["relationColumn"] = ""; //关联栏目
        $data["epgGroup"] = ""; //EPG分组
        $data["createTime"] = $topic['add_times']; //创建时间
        $data["statusChangeTime"] = ""; //状态修改时间
        $data["operator"] = ""; //操作人
        $data["is3D"] = "否"; //是否3D [否/是 默认否]
        $data["isTrailer"] = "否"; //是否预告片 [否/是 默认否]
        $data["director"] = "无"; //【必填】导演
        $data["drectorInitials"] = "w"; //【必填】导演拼音
        $data["screenWriter"] = ""; //编剧
        $data["starring"] = "无"; //【必填】主演/主角
        $data["starringInitials"] = "w"; //【必填】主演/主角拼音
        $data["enName"] = ""; //英文片名
        $data["premiereChannel"] = "逗牛短视频"; //【必填】首播频道
        $data["premiereTime"] = ""; //首播时间
        $data["newestSeriesNo"] = 1; //节目最新集数
        $data["prize"] = ""; //奖项
        $data["is4K"] = "否"; //4K标识 [否/是 默认否]
        $data["deployDate"] = ""; //发行时间
        $data["accesser"] = ""; //受众
        $data["seriesPeriod"] = ""; //期数
        $data["match"] = ""; //赛事
        $data["reporter"] = ""; //记者
        $data["guest"] = ""; //嘉宾
        $data["subject"] = ""; //科目
        $data["classHour"] = ""; //课时
        $data["singer"] = ""; //歌手
        $data["cataloger"] = ""; //编目录入人
        $data["others"] = ""; //预留字段
        $data["platform"] = "douniu"; //平台 [wuxi:无锡/tencent:腾讯/goat:炫舞未来/hengxin:恒信/douniu:逗牛]
        $data["isStock"] = "否"; //是否回调 [否/是 默认否]
        $data["outsideSetId"] = ""; //外部来源ID]

        // 上传视频文件到FTP - 需要处理成绝度路径
        $uploadResult = $this->uploadFileToFtp($videoUrl); // 1.成功 -1，失败
        if ($uploadResult['code'] != 1) {
            // 日志记录
            $inData['set_id'] = $data['id'];
            $inData['post_data'] = json_encode($data, JSON_UNESCAPED_UNICODE);
            $inData['add_time'] = date('Y-m-d H:i:s');
            $inData['status_push_video'] = -1;
            $inData['content'] = json_encode($uploadResult, JSON_UNESCAPED_UNICODE);;
            $this->db->insert($this->table_push_video, $inData);
            return $uploadResult;
        }else{
            // 构建data结构
            $video["videoPaths"] = [$uploadResult['fileFtpPath']];
            $videos[] = $video;
            $programs["videos"] = $videos;
            $data["programs"][] = $programs;
        }

        // 进行推送  {{HOST}}/service/program/{{PLATFORM}}/push
        // 现在都是测试地址
        //测试地址：https://stage-bzo.cloud.ottcn.com/piper/service/program/douniu/push
        //正式地址：https://bzo.cloud.ottcn.com/piper/service/program/douniu/push
        $pushUrl = $env == 'product' ? 'https://bzo.cloud.ottcn.com/piper/service/program/douniu/push' : 'https://bzo.cloud.ottcn.com/piper/service/program/douniu/push';
        $data_string = json_encode($data);
        $ch = curl_init($pushUrl);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'Content-Length: ' . strlen($data_string)
        ));
        $curlResult = curl_exec($ch);
        if (curl_errno($ch)) {
            print curl_error($ch);
        }
        curl_close($ch);
        $curlResArr = json_decode($curlResult, true);

        // 处理推送结果
        if ($curlResArr['code'] == 1) {
            // 推送成功
            $inData['status_push_data'] = 1;
            $result['code'] = 1;
            $result['msg'] = '推送成功：'.$curlResult;
        } else {
            // 推送失败
            $inData['status_push_data'] = 0;
            $result['code'] = -1;
            $result['msg'] = '推送失败：'.$curlResult;
        }
        $result['data'] = $data;

        // 日志记录
        $inData['set_id'] = $data['id'];
        $inData['post_data'] = json_encode($data, JSON_UNESCAPED_UNICODE);
        $inData['add_time'] = date('Y-m-d H:i:s');
        $inData['status_push_video'] = 2;
        $inData['content'] = $curlResult;
        $this->db->insert($this->table_push_video, $inData);

        return $result;
    }


//    public function push($materialId, $env = 'test')
//    {
//        $result['code'] = -1;
//        $result['msg'] = '';
//        $result['data'] = '';
//
//        error_reporting(E_ALL & ~E_NOTICE);
//        $py = new Pinyin();
//
//        // 查询视频
//        $this->db->select('*');
//        $this->db->from($this->table_material);
//        $this->db->where("id", $materialId);
//        $res = $this->db->get();
//        $material = $res->row_array();
//
//        // 视频基媒体信息
//        $ffmpeg = new FFmpeg();
//        $videoUrl = empty($material['user_video_url']) ? $material['video_url'] : $material['user_video_url'];
//        $materialInfo = $ffmpeg->getDetail($videoUrl);
//
//        // 查询话题
//        $this->db->select('*');
//        $this->db->from($this->table_type_sub);
//        $this->db->where("id", $material['join_type_sub']);
//        $res = $this->db->get();
//        $topic = $res->row_array();
//
//        // 构建视频
//        $video["videoNameCodeF"] = $material['video_desc']; // 视频名称前半段
//        $video["videoNameCodeB"] = ""; // 视频名称后半段
//        $video["definition"] = "高清"; // 清晰度，待选项为：超清、高清、标清；默认为高清
//        $video["imgPaths"] = [$material['pic']]; // 图片路径1
//        $video["videoPaths"] = [$videoUrl]; // 视频路径
//        // 码率
//        $rate = ceil($materialInfo['bit_rate'] / 1000);
//        if ($rate >= 1000) {
//            $rate = round($rate / 1000, 1) . "M";
//        } else {
//            $rate = $rate . "K";
//        }
//        $video["videoDataRate"] = $rate; // 视频码率 1000以上的用M(1位小数),1000以下的用K(取整)
//        $video["videoSize"] = $materialInfo['width'] . '*' . $materialInfo['height']; // 视频尺寸 宽*高
//        $video["lengthUnit"] = 1; // 时长单位[0分 1秒 默认0]
//        $video["videoLength"] = ceil($materialInfo['duration']); // 【必填】视频时长【秒】
//        $video["headLength"] = ""; // 片头时长[单位默认分，可根据lengthUnit调整]
//        $video["tailLength"] = ""; // 片尾时长[单位默认分，可根据lengthUnit调整]
//        $video["videoPart"] = ""; // 视频文件所分章节数-M1保留字段
//        $video["videoPartTime"] = ""; // 每个章节视频文件的时长-M1保留字段
//        $video["createTime"] = $material['add_time'];
//
//        // 构建节目
//        $programs["id"] = $material['id']; // 【必填】
//        $programs["name"] = mb_strlen($material['video_desc']) >= 24 ? $material['video_desc'] : mb_substr($material['video_desc'], 0, 24); // 【必填】名称
//        $programs["alias"] = ""; // 其它名称
//        $programs["subName"] = ""; // 副标题
//        $programs["keywords"] = $topic['sub_title']; // 关键字 [如果多个以空格分隔]
//        $programs["category"] = "综艺"; // 【必填】分类 [如果多个以空格分隔]
//        $programs["sndCategory"] = '逗牛短视频'; // 【必填】二级分类 [如果多个以空格分隔]
//        $programs["dsc"] = $material['video_desc'] . ' ' . $material['nick_name'] . '原创'; // 简介[20-80]
//        $programs["createTime"] = $material['add_time']; // 创建时间
//        $programs["source"] = ""; // 数据来源
//        $programs["sourceMedia"] = ""; // 来源介质
//        $programs["copyright"] = ""; // 版权方
//        $programs["copyrightCode"] = ""; // 版权编码
//        $programs["crBeginDate"] = ""; // 版权生效时间
//        $programs["crEndDate"] = ""; // 版权失效时间
//        $programs["area"] = "中国大陆"; // 【必填】国家地区
//        $programs["nameInitials"] = $py->getpy($material['video_desc'], false); // 【必填】名称首字母
//        $programs["year"] = date("Y", strtotime($material['add_time'])); // 【必填】年份-自动识别
//        $programs["language"] = "普通话"; // 【必填】语言
//        $programs["compere"] = ""; // 主持人
//        $programs["producer"] = $material['nick_name']; // 制片人
//        $programs["column"] = ""; // 栏目
//        $programs["tvColumnId"] = ""; // 栏目Id
//        $programs["poster"] = $material['pic']; // 海报
//        $programs["contentProvider"] = ""; // 内容提供商
//        $programs["premiereTime"] = $material['add_time']; // 【必填】首播时间
//        $programs["premiereChannel"] = "逗牛短视频"; // 【必填】首播频道
//        $programs["seriesNo"] = ""; // 集号
//        $programs["planner"] = ""; // 策划人
//        $programs["status"] = ""; // 节目状态
//        $programs["onlineDate"] = ""; // 节目上线日期
//        $programs["director"] = $material['nick_name']; // 【必填】导演
//        $programs["screenWriter"] = ""; // 编剧
//        $programs["starring"] = $material['nick_name']; // 【必填】主演/主角
//        $programs["starringInitials"] = $py->getpy($material['nick_name'], false); // 【必填】主演/主角拼音
//        $programs["isUnpack"] = "否"; // 是否拆条 [否/是 默认否]
//        $programs["enName"] = ""; // 英文片名
//        $programs["sepSeriesAmount"] = ""; // 分集总数
//        $programs["prize"] = ""; // 奖项
//        $programs["is4K"] = "否"; // 4K标识 [否/是 默认否]
//        $programs["accesser"] = ""; // 受众
//        $programs["match"] = ""; // 赛事
//        $programs["reporter"] = ""; // 记者
//        $programs["guest"] = ""; // 嘉宾
//        $programs["subject"] = ""; // 科目
//        $programs["classHour"] = ""; // 课时
//        $programs["cataloger"] = ""; // 编目录入人
//        $programs["others"] = ""; // 预留字段
//        $programs["platform"] = "douniu"; // 平台 [wuxi:无锡/tencent:腾讯/goat:炫舞未来/hengxin:恒信/douniu:逗牛]
//        $programs["deployDate"] = ""; // 发行时间
//        $programs["score"] = ""; // 评分
//        $programs["isTrailer"] = "否"; // 是否预告片 [否/是 默认否]
//        $programs["isStock"] = "否"; // 是否回调 [否/是 默认否]
//        $programs["outsideId"] = ""; // 外部来源ID
//
//        // 构建节目集
//        $data["id"] = $topic['id']; //【必填】节目集ID
//        $data["name"] = mb_strlen($topic['sub_title']) >= 18 ? $topic['sub_title'] : mb_substr($topic['sub_title'], 0, 18); //【必填】名称
//        $data['keywords'] = $topic['sub_title']; //【必填】关键字
//        $data["alias"] = ""; //其它名称(别名)
//        $data["labels"] = ''; //标签 [如果多个以空格分隔]
//        $data["category"] = "综艺"; //【必填】分类 [如果多个以空格分隔]
//        $data["sndCategory"] = '逗牛短视频'; //【必填】二级分类 [如果多个以空格分隔]
//        $data["dsc"] = $topic['sub_desc']; //简介（20-80）
//        $data["source"] = ""; //数据来源
//        $data["copyright"] = ""; //版权方
//        $data["copyrightCode"] = ""; //版权编码
//        $data["crBeginDate"] = ""; //版权生效时间
//        $data["crEndDate"] = ""; //版权失效时间
//        $data["area"] = "中国大陆"; //【必填】国家地区
//        $data["nameInitials"] = $py->getpy($topic['sub_title'], false); //【必填】名称首字母
//        $data["year"] = date("Y", strtotime($topic['add_times'])); //年份（自动识别）
//        $data["language"] = "普通话"; //【必填】语言
//        $data["compere"] = ""; //主持人
//        $data["producer"] = ""; //制片人
//        $data["column"] = ""; //栏目
//        $data["tvColumnId"] = ""; // 栏目Id
//        $data["poster"] = $topic['sub_pic']; //【必填】【话题缩略横图】海报
//        $data["definition"] = "高清"; //【必填】清晰度 [高清/标清等]
//        $data["contentProvider"] = ""; //内容提供商
//        $data["contentProviderCode"] = ""; //内容提供商编码
//        $data["outerCode"] = ""; //外部数据标识
//        $data["seriesAmount"] = 0; //【必填】节目总集数-默认0
//        $data["playOrder"] = "降序"; //【必填】节目播放顺序（未来）[降序/升序 默认降序]
//        $data["arrangeOrder"] = "降序"; //节目排序方式 [降序/升序]
//        $data["videoLength"] = ""; //节目集时长 [单位分]
//        $data["crInfoName"] = ""; //版权信息名称
//        $data["trailerLength"] = ""; //试播时长 [单位分]
//        $data["headLength"] = ""; //片头时长[单位默认分，可根据lengthUnit调整]
//        $data["tailLength"] = ""; //片尾时长[单位默认分，可根据lengthUnit调整]
//        $data["lengthUnit"] = 1; //时长单位[0:分 1:秒 默认0]
//        $data["crInfoName"] = ""; //版权信息名称
//        $data["status"] = ""; //节目集状态
//        $data["priceLabels"] = ""; //节目价格标签
//        $data["suggestedPrice"] = ""; //建议价格 [单位元]
//        $data["score"] = ""; //评分
//        $data["publishPlatform"] = ""; //发布平台
//        $data["relationProgram"] = ""; //关联节目
//        $data["relationColumn"] = ""; //关联栏目
//        $data["epgGroup"] = ""; //EPG分组
//        $data["createTime"] = $topic['add_times']; //创建时间
//        $data["statusChangeTime"] = ""; //状态修改时间
//        $data["operator"] = ""; //操作人
//        $data["is3D"] = "否"; //是否3D [否/是 默认否]
//        $data["isTrailer"] = "否"; //是否预告片 [否/是 默认否]
//        $data["director"] = "无"; //【必填】导演
//        $data["screenWriter"] = ""; //编剧
//        $data["starring"] = "无"; //【必填】主演/主角
//        $data["starringInitials"] = "无"; //【必填】主演/主角拼音
//        $data["enName"] = ""; //英文片名
//        $data["premiereChannel"] = "逗牛短视频"; //【必填】首播频道
//        $data["premiereTime"] = ""; //首播时间
//        $data["newestSeriesNo"] = ""; //节目最新集数
//        $data["prize"] = ""; //奖项
//        $data["is4K"] = "否"; //4K标识 [否/是 默认否]
//        $data["deployDate"] = ""; //发行时间
//        $data["accesser"] = ""; //受众
//        $data["seriesPeriod"] = ""; //期数
//        $data["match"] = ""; //赛事
//        $data["reporter"] = ""; //记者
//        $data["guest"] = ""; //嘉宾
//        $data["subject"] = ""; //科目
//        $data["classHour"] = ""; //课时
//        $data["singer"] = ""; //歌手
//        $data["cataloger"] = ""; //编目录入人
//        $data["others"] = ""; //预留字段
//        $data["platform"] = "douniu"; //平台 [wuxi:无锡/tencent:腾讯/goat:炫舞未来/hengxin:恒信/douniu:逗牛]
//        $data["isStock"] = "否"; //是否回调 [否/是 默认否]
//        $data["outsideSetId"] = ""; //外部来源ID
//
//        // 上传视频文件到FTP - 需要处理成绝度路径
//        $uploadResult = $this->uploadFileToFtp($videoUrl); // 1.成功 -1，失败
//        if ($uploadResult['code'] != 1) {
//            // 日志记录
//            $inData['set_id'] = $data['id'];
//            $inData['post_data'] = json_encode($data, JSON_UNESCAPED_UNICODE);
//            $inData['add_time'] = date('Y-m-d H:i:s');
//            $inData['status_push_video'] = -1;
//            $inData['err_data'] = json_encode($uploadResult, JSON_UNESCAPED_UNICODE);;
//            $this->db->insert($this->table_push_video, $inData);
//            return $uploadResult;
//        }else{
//            // 构建data结构
//            $video["videoPaths"] = [$uploadResult['fileFtpPath']];
//            $videos[] = $video;
//            $programs["videos"] = $videos;
//            $data["programs"][] = $programs;
//        }
//
//        // 进行推送  {{HOST}}/service/program/{{PLATFORM}}/push
//        // 现在都是测试地址
//        //测试地址：https://stage-bzo.cloud.ottcn.com/piper/service/program/douniu/push
//        //正式地址：https://bzo.cloud.ottcn.com/piper/service/program/douniu/push
//        $pushUrl = $env == 'product' ? 'https://bzo.cloud.ottcn.com/piper/service/program/douniu/push' : 'https://bzo.cloud.ottcn.com/piper/service/program/douniu/push';
//        $data_string = json_encode($data);
//        $ch = curl_init($pushUrl);
//        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
//        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
//            'Content-Type: application/json',
//            'Content-Length: ' . strlen($data_string)
//        ));
//        $curlResult = curl_exec($ch);
//        if (curl_errno($ch)) {
//            print curl_error($ch);
//        }
//        curl_close($ch);
//        $curlResArr = json_decode($curlResult, true);
//
//        // 处理推送结果
//        if ($curlResArr['code'] == 1) {
//            // 推送成功
//            $inData['status_push_data'] = 1;
//            $result['code'] = 1;
//            $result['msg'] = '推送成功：'.$curlResult;
//        } else {
//            // 推送失败
//            $inData['status_push_data'] = 0;
//            $result['code'] = -1;
//            $result['msg'] = '推送失败：'.$curlResult;
//        }
//        $result['data'] = $data;
//
//        // 日志记录
//        $inData['set_id'] = $data['id'];
//        $inData['post_data'] = json_encode($data, JSON_UNESCAPED_UNICODE);
//        $inData['add_time'] = date('Y-m-d H:i:s');
//        $inData['status_push_video'] = 2;
//        $inData['content'] = $curlResult;
//        $this->db->insert($this->table_push_video, $inData);
//
//        return $result;
//    }

    /**
     * 推送视频到FTP
     * @param string $fileUrl
     * @return bool
     */
    public function uploadFileToFtp($fileUrl = '')
    {
        $result['code'] = -1;
        $result['msg'] = '';
        $result['data'] = '';

        $config['host'] = '111.32.132.218';
        $config['user'] = 'douniu';
        $config['pass'] = 'io5aep9Zi6Ah';
        $ftp = new Ftp($config);
        $conn = $ftp->connect();
        if (!$conn) {
            $result['msg'] = $ftp->get_error_msg();
        } else {
            $result['msg'] = '链接成功';
        }


        $rootPath = "/data0/dk/cdn/host";
        $host = 'https://s-js.sports.cctv.com/host';
        $localFilePath = str_replace($host, $rootPath, $fileUrl); // 源文件
        // $localFilePath = "/data0/dk/cdn/host/mv/1544884984_15439097014989.mp4";

        $path_arr = explode('/', $localFilePath); // 取目录数组
        $file_name = array_pop($path_arr); // 弹出文件名
        $remoteFile = date('Y/m/d/').$file_name; // 目标文件
        // $remoteFile = trim(str_replace($rootPath, "", $localFilePath), "/"); // 目标文件

        // 推送的目录调整为 /YYYY/MM/DD/xxxx.suffix 如 /2018/12/20/xxxx.mp4

        //上传文件
        if ($ftp->upload($localFilePath, $remoteFile)) {
            $result['code'] = 1;
            $result['msg'] = '上传FTP成功';
            $result['data'] = '';
            $result['fileFtpPath'] = '/'.$remoteFile;
        } else {
            $result['code'] = -1;
            $result['msg'] = '上传FTP失败:' . $ftp->get_error_msg();
            $result['data'] = $fileUrl;
        }

        $ftp->close();

        return $result;

    }

    /**
     * 查询user_material表被推送的
     */
    public function chongxin_tuisong(){
        $this->db->select('*');
        $this->db->from($this->table);
        $this->db->where("del1",2);
        $this->db->where("mix_status",1);
        $this->db->where("examine",3);
        $this->db->where("id >",352);
        $datas['total']=$this->db->count_all_results("",false);
        $res = $this->db->get();
        $datas['row']= $res->result_array();
//        echo $this->db->last_query();
        return $datas;
    }
}